/**前后台交互工具类*/
(function ($) {
	$.QuickRemote = {
		/**
		 * json格式的ajax交互
		 * @param funcName	调用函数名
		 * @param callBack	回调本地函数
		 * @param params	参数
		 * @param additionParams	需要回传的参数
		 */
		AjaxJson: function(funcName, callBack, params, additionParams)
		{
			if (params == null) {
				params = {};
			}
			for ( var key in params) {
				var value = params[key];
				params[key] = encodeURI(value);
			}
			var index;
			$.ajax({
				type : "POST",// 使用get方法访问后台
				dataType : "json",// 返回json格式的数据
				url : funcName,// 要访问的后台地址
				data : params,// 要发送的数据
				beforeSend : function() {// 发送请求前调用函数
					index = $.QuickAlert.alertLoading();
				},
				complete : function() {// 发送请求后调用参数，不管成功失败都会调用
					parent.layer.close(index);
				},
				success : function(result) {
					callBack = eval(callBack);
					if (additionParams != null) {
						callBack.apply(this, [ result, additionParams ]);
					} else {
						callBack.apply(this, [ result ]);
					}
				},
				error : function(re) {// 反生错误时调用。
					$.QuickAlert.alertFail({content: re.responseText});
				}
			});
		}
		,/**
		 * XML格式的ajax交互
		 * @param funcName	调用函数名
		 * @param callBack	回调本地函数
		 * @param params	参数
		 * @param additionParams	需要回传的参数
		 */
		AjaxXML: function(funcName, callBack, params, additionParams)
		{
			if (params == null) {
				params = {};
			}
			for ( var key in params) {
				var value = params[key];
				params[key] = encodeURI(value);
			}
			var index;
			$.ajax({
				type : "POST",// 使用get方法访问后台
				dataType : "XML",// 返回XML格式的数据
				url : funcName,// 要访问的后台地址
				data : params,// 要发送的数据
				beforeSend : function() {// 发送请求前调用函数
					index = $.QuickAlert.alertLoading();
				},
				complete : function() {// 发送请求后调用参数，不管成功失败都会调用
					parent.layer.close(index);
				},
				success : function(result) {
					callBack = eval(callBack);
					if (additionParams != null) {
						callBack.apply(this, [ result, additionParams ]);
					} else {
						callBack.apply(this, [ result ]);
					}
				},
				error : function(re) {// 发生错误时调用。
					$.QuickAlert.alertFail({content: re.responseText});
				}
			});
		}
		/**
		 * json格式的ajax交互 异步调用
		 * @param funcName	调用函数名
		 * @param callBack	回调本地函数
		 * @param params	参数
		 * @param additionParams	需要回传的参数
		 */
		,AjaxJsonAsync: function(funcName, callBack, params, additionParams)
		{
			if (params == null) {
				params = {};
			}
			for ( var key in params) {
				var value = params[key];
				params[key] = encodeURI(value);
			}
			var index;
			$.ajax({
				async: false,
				type : "POST",// 使用get方法访问后台
				dataType : "json",// 返回json格式的数据
				url : funcName,// 要访问的后台地址
				data : params,// 要发送的数据
				beforeSend : function() {// 发送请求前调用函数
					index = $.QuickAlert.alertLoading();
				},
				complete : function() {// 发送请求后调用参数，不管成功失败都会调用
					parent.layer.close(index);
				},
				success : function(result) {
					callBack = eval(callBack);
					if (additionParams != null) {
						callBack.apply(this, [ result, additionParams ]);
					} else {
						callBack.apply(this, [ result ]);
					}
				},
				error : function(re) {// 反生错误时调用。
					$.QuickAlert.alertFail({content: re.responseText});
				}
			});
		}
		/**
		 * ajax表单提交
		 */
		,AjaxFiledFormSubmit : function(formId, callBack, params, additionParams, resetForm)
		{
			if(params == null){
				params = {};
			}
			for(var key in params)
			{
				var value = params[key];
				params[key] = encodeURI(value);
			}
			if(!resetForm)
			{
				resetForm = false;
			}
			var index ;
			var options = {
		    		type:'post',
		    		dataType:'json',
		    		data:params,
		    		resetForm: resetForm,
					beforeSend : function() {// 发送请求前调用函数
						/*index = parent.layer.load(2, {
							shade : [ 0.3, '#fff' ]
						}); // 0.1透明度的白色背景*/
						index = $.QuickAlert.alertLoading();
					},
					complete : function() {// 发送请求后调用参数，不管成功失败都会调用
						parent.layer.close(index);
					},
		    		success:function(result){
		    			//parent.layer.closeAll();
		            	callBack = eval(callBack);
		            	if(additionParams)
		        		{
		            		callBack.apply(this, [result, additionParams]);
		        		}
		            	else
		        		{
		            		callBack.apply(this, [result]);
		        		}
		            },
		            error: function(re){//错误时调用。
		            	$.QuickAlert.alertFail({content: re.responseText});
		            }
		    };
			$("#" + formId).ajaxSubmit(options);
		}
		,formSubmit: function(formId, params)
		{
			if(params)
			{
				$.each(params, function(key, value){
					var input = $("<input>");
					input.attr("name", key);
					input.attr("value", value);
					input.appendTo($("#"+formId));
				})
			}
			$("#"+formId).submit();
		}
		,AjaxFiledFormSubmitJsonp : function(formId, callBack, params, additionParams, resetForm)
		{
			if(params == null){
				params = {};
			}
			for(var key in params)
			{
				var value = params[key];
				params[key] = encodeURI(value);
			}
			if(!resetForm)
			{
				resetForm = false;
			}
			var index ;
			var options = {
		    		type:'get',
		    		dataType:'jsonp',
		    		jsonp: "callback",
		    		data:params,
		    		resetForm: resetForm,
					beforeSend : function() {// 发送请求前调用函数
						/*index = parent.layer.load(2, {
							shade : [ 0.3, '#fff' ]
						}); // 0.1透明度的白色背景*/
						index = $.QuickAlert.alertLoading();
					},
					complete : function() {// 发送请求后调用参数，不管成功失败都会调用
						parent.layer.close(index);
					},
		    		success:function(result){
//		    			parent.layer.closeAll();
		            	callBack = eval(callBack);
		            	if(additionParams)
		        		{
		            		callBack.apply(this, [result, additionParams]);
		        		}
		            	else
		        		{
		            		callBack.apply(this, [result]);
		        		}
		            },
		            error: function(re){//错误时调用。
		            	$.QuickAlert.alertFail({content: re.responseText});
		            }
		    };
			$("#" + formId).ajaxSubmit(options);
		}
	};
})(jQuery);










